{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "56aaf47a",
   "metadata": {},
   "source": [
    "# Probability density functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "79f64f53",
   "metadata": {},
   "outputs": [],
   "source": [
    "from os.path import basename, exists\n",
    "\n",
    "\n",
    "def download(url):\n",
    "    filename = basename(url)\n",
    "    if not exists(filename):\n",
    "        from urllib.request import urlretrieve\n",
    "\n",
    "        local, _ = urlretrieve(url, filename)\n",
    "        print(\"Downloaded \" + local)\n",
    "\n",
    "\n",
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/thinkstats2.py\")\n",
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/thinkplot.py\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "955f8f40",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "import thinkstats2\n",
    "import thinkplot"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e8a27c56",
   "metadata": {},
   "source": [
    "I'll start with the data from the BRFSS again."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "327c8d17",
   "metadata": {},
   "source": [
    "## PDFs\n",
    "\n",
    "The derivative of a CDF is called a **probability density function**, or\n",
    "PDF. For example, the PDF of an exponential distribution is\n",
    "$$PDF_{expo}(x) = \\lambda e^{-\\lambda x}$$ The PDF of a normal\n",
    "distribution is $$PDF_{normal}(x) = \\frac{1}{\\sigma \\sqrt{2 \\pi}} \n",
    "                 \\exp \\left[ -\\frac{1}{2} \n",
    "                 \\left( \\frac{x - \\mu}{\\sigma} \\right)^2 \\right]$$\n",
    "Evaluating a PDF for a particular value of $x$ is usually not useful.\n",
    "The result is not a probability; it is a probability *density*.\n",
    "\n",
    "In physics, density is mass per unit of volume; in order to get a mass,\n",
    "you have to multiply by volume or, if the density is not constant, you\n",
    "have to integrate over volume.\n",
    "\n",
    "Similarly, **probability density** measures probability per unit of $x$.\n",
    "In order to get a probability mass, you have to integrate over $x$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a43aba55",
   "metadata": {},
   "source": [
    "`thinkstats2` provides a class called Pdf that represents a probability\n",
    "density function. Every Pdf object provides the following methods:\n",
    "\n",
    "-   `Density`, which takes a value, `x`, and returns the density of the\n",
    "    distribution at `x`.\n",
    "\n",
    "-   `Render`, which evaluates the density at a discrete set of values\n",
    "    and returns a pair of sequences: the sorted values, `xs`, and their\n",
    "    probability densities, `ds`.\n",
    "\n",
    "-   `MakePmf`, which evaluates `Density` at a discrete set of values and\n",
    "    returns a normalized Pmf that approximates the Pdf.\n",
    "\n",
    "-   `GetLinspace`, which returns the default set of points used by\n",
    "    `Render` and `MakePmf`.\n",
    "\n",
    "Pdf is an abstract parent class, which means you should not instantiate\n",
    "it; that is, you cannot create a Pdf object. Instead, you should define\n",
    "a child class that inherits from Pdf and provides definitions of\n",
    "`Density` and `GetLinspace`. Pdf provides `Render` and `MakePmf`.\n",
    "\n",
    "For example, `thinkstats2` provides a class named `NormalPdf` that\n",
    "evaluates the normal density function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "5a0f012c",
   "metadata": {},
   "outputs": [],
   "source": [
    "from thinkstats2 import Pdf\n",
    "\n",
    "class NormalPdf(Pdf):\n",
    "\n",
    "    def __init__(self, mu=0, sigma=1, label=''):\n",
    "        self.mu = mu\n",
    "        self.sigma = sigma\n",
    "        self.label = label\n",
    "\n",
    "    def Density(self, xs):\n",
    "        return scipy.stats.norm.pdf(xs, self.mu, self.sigma)\n",
    "\n",
    "    def GetLinspace(self):\n",
    "        low, high = self.mu-3*self.sigma, self.mu+3*self.sigma\n",
    "        return np.linspace(low, high, 101)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "956261d5",
   "metadata": {},
   "source": [
    "The NormalPdf object contains the parameters `mu` and `sigma`. `Density`\n",
    "uses `scipy.stats.norm`, which is an object that represents a normal\n",
    "distribution and provides `cdf` and `pdf`, among other methods (see\n",
    "Section [\\[normal\\]](#normal){reference-type=\"ref\" reference=\"normal\"}).\n",
    "\n",
    "The following example creates a NormalPdf with the mean and variance of\n",
    "adult female heights, in cm, from the BRFSS (see\n",
    "Section [\\[brfss\\]](#brfss){reference-type=\"ref\" reference=\"brfss\"}).\n",
    "Then it computes the density of the distribution at a location one\n",
    "standard deviation from the mean."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "64ac3b29",
   "metadata": {},
   "outputs": [],
   "source": [
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/brfss.py\")\n",
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/CDBRFS08.ASC.gz\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e45150ed",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/downey/ThinkStats/soln/brfss.py:44: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.age.replace([7, 9], float('NaN'), inplace=True)\n",
      "/home/downey/ThinkStats/soln/brfss.py:47: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.htm3.replace([999], float('NaN'), inplace=True)\n",
      "/home/downey/ThinkStats/soln/brfss.py:50: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.wtkg2.replace([99999], float('NaN'), inplace=True)\n",
      "/home/downey/ThinkStats/soln/brfss.py:54: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.wtyrago.replace([7777, 9999], float('NaN'), inplace=True)\n"
     ]
    }
   ],
   "source": [
    "import brfss\n",
    "\n",
    "df = brfss.ReadBrfss(nrows=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "2a4e85ed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(163.22347500412215, 7.269156286642232)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "female = df[df.sex==2]\n",
    "female_heights = female.htm3.dropna()\n",
    "mean, std = female_heights.mean(), female_heights.std()\n",
    "mean, std"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "452138d1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.033287319047437085"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pdf = thinkstats2.NormalPdf(mean, std)\n",
    "pdf.Density(mean + std)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c185111e",
   "metadata": {},
   "source": [
    "The result is about 0.03, in units of probability mass per cm. Again, a\n",
    "probability density doesn't mean much by itself. But if we plot the Pdf,\n",
    "we can see the shape of the distribution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "1ddbf508",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 800x600 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "thinkplot.Pdf(pdf, label='normal')\n",
    "thinkplot.Show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b758b289",
   "metadata": {},
   "source": [
    "`thinkplot.Pdf` plots the Pdf as a smooth function, as contrasted with\n",
    "`thinkplot.Pmf`, which renders a Pmf as a step function.\n",
    "Figure [\\[pdf_example\\]](#pdf_example){reference-type=\"ref\"\n",
    "reference=\"pdf_example\"} shows the result, as well as a PDF estimated\n",
    "from a sample, which we'll compute in the next section.\n",
    "\n",
    "You can use `MakePmf` to approximate the Pdf:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "f177588b",
   "metadata": {},
   "outputs": [],
   "source": [
    "pmf = pdf.MakePmf()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "491f7694",
   "metadata": {},
   "source": [
    "By default, the resulting Pmf contains 101 points equally spaced from\n",
    "`mu - 3*sigma` to `mu + 3*sigma`. Optionally, `MakePmf` and `Render` can\n",
    "take keyword arguments `low`, `high`, and `n`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91858c9e",
   "metadata": {},
   "source": [
    "## Kernel density estimation\n",
    "\n",
    "**Kernel density estimation** (KDE) is an algorithm that takes a sample\n",
    "and finds an appropriately smooth PDF that fits the data. You can read\n",
    "details at <http://en.wikipedia.org/wiki/Kernel_density_estimation>.\n",
    "\n",
    "`scipy` provides an implementation of KDE and `thinkstats2` provides a\n",
    "class called `EstimatedPdf` that uses it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "492c2fa1",
   "metadata": {},
   "outputs": [],
   "source": [
    "class EstimatedPdf(Pdf):\n",
    "\n",
    "    def __init__(self, sample):\n",
    "        self.kde = scipy.stats.gaussian_kde(sample)\n",
    "\n",
    "    def Density(self, xs):\n",
    "        return self.kde.evaluate(xs)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bac2ef96",
   "metadata": {},
   "source": [
    "`__init__` takes a sample and computes a kernel density estimate. The\n",
    "result is a `gaussian_kde` object that provides an `evaluate` method.\n",
    "\n",
    "`Density` takes a value or sequence, calls `gaussian_kde.evaluate`, and\n",
    "returns the resulting density. The word \"Gaussian\" appears in the name\n",
    "because it uses a filter based on a Gaussian distribution to smooth the\n",
    "KDE.\n",
    "\n",
    "Here's an example that generates a sample from a normal distribution and\n",
    "then makes an EstimatedPdf to fit it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "363b8193",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import random\n",
    "\n",
    "sample = [random.gauss(mean, std) for i in range(500)]\n",
    "sample_pdf = thinkstats2.EstimatedPdf(sample)\n",
    "thinkplot.Pdf(sample_pdf, label='sample KDE')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "547b06b6",
   "metadata": {},
   "source": [
    "`sample` is a list of 500 random heights. `sample_pdf` is a Pdf object\n",
    "that contains the estimated KDE of the sample.\n",
    "\n",
    "Figure [\\[pdf_example\\]](#pdf_example){reference-type=\"ref\"\n",
    "reference=\"pdf_example\"} shows the normal density function and a KDE\n",
    "based on a sample of 500 random heights. The estimate is a good match\n",
    "for the original distribution.\n",
    "\n",
    "Estimating a density function with KDE is useful for several purposes:\n",
    "\n",
    "-   *Visualization:* During the exploration phase of a project, CDFs are\n",
    "    usually the best visualization of a distribution. After you look at\n",
    "    a CDF, you can decide whether an estimated PDF is an appropriate\n",
    "    model of the distribution. If so, it can be a better choice for\n",
    "    presenting the distribution to an audience that is unfamiliar with\n",
    "    CDFs.\n",
    "\n",
    "-   *Interpolation:* An estimated PDF is a way to get from a sample to a\n",
    "    model of the population. If you have reason to believe that the\n",
    "    population distribution is smooth, you can use KDE to interpolate\n",
    "    the density for values that don't appear in the sample.\n",
    "\n",
    "-   *Simulation:* Simulations are often based on the distribution of a\n",
    "    sample. If the sample size is small, it might be appropriate to\n",
    "    smooth the sample distribution using KDE, which allows the\n",
    "    simulation to explore more possible outcomes, rather than\n",
    "    replicating the observed data."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bdb6bc7c",
   "metadata": {},
   "source": [
    "## The distribution framework\n",
    "\n",
    "![A framework that relates representations of distribution\n",
    "functions.](figs/distribution_functions.pdf){height=\"2.2in\"}\n",
    "\n",
    "At this point we have seen PMFs, CDFs and PDFs; let's take a minute to\n",
    "review.\n",
    "Figure [\\[dist_framework\\]](#dist_framework){reference-type=\"ref\"\n",
    "reference=\"dist_framework\"} shows how these functions relate to each\n",
    "other.\n",
    "\n",
    "We started with PMFs, which represent the probabilities for a discrete\n",
    "set of values. To get from a PMF to a CDF, you add up the probability\n",
    "masses to get cumulative probabilities. To get from a CDF back to a PMF,\n",
    "you compute differences in cumulative probabilities. We'll see the\n",
    "implementation of these operations in the next few sections.\n",
    "\n",
    "A PDF is the derivative of a continuous CDF; or, equivalently, a CDF is\n",
    "the integral of a PDF. Remember that a PDF maps from values to\n",
    "probability densities; to get a probability, you have to integrate."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a82910f",
   "metadata": {},
   "source": [
    "To get from a discrete to a continuous distribution, you can perform\n",
    "various kinds of smoothing. One form of smoothing is to assume that the\n",
    "data come from an analytic continuous distribution (like exponential or\n",
    "normal) and to estimate the parameters of that distribution. Another\n",
    "option is kernel density estimation.\n",
    "\n",
    "The opposite of smoothing is **discretizing**, or quantizing. If you\n",
    "evaluate a PDF at discrete points, you can generate a PMF that is an\n",
    "approximation of the PDF. You can get a better approximation using\n",
    "numerical integration.\n",
    "\n",
    "To distinguish between continuous and discrete CDFs, it might be better\n",
    "for a discrete CDF to be a \"cumulative mass function,\" but as far as I\n",
    "can tell no one uses that term."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb0018d7",
   "metadata": {},
   "source": [
    "## Hist implementation\n",
    "\n",
    "At this point you should know how to use the basic types provided by\n",
    "`thinkstats2`: Hist, Pmf, Cdf, and Pdf. The next few sections provide\n",
    "details about how they are implemented. This material might help you use\n",
    "these classes more effectively, but it is not strictly necessary.\n",
    "\n",
    "Hist and Pmf inherit from a parent class called `_DictWrapper`. The\n",
    "leading underscore indicates that this class is \"internal;\" that is, it\n",
    "should not be used by code in other modules. The name indicates what it\n",
    "is: a dictionary wrapper. Its primary attribute is `d`, the dictionary\n",
    "that maps from values to their frequencies.\n",
    "\n",
    "The values can be any hashable type. The frequencies should be integers,\n",
    "but can be any numeric type.\n",
    "\n",
    "`_DictWrapper` contains methods appropriate for both Hist and Pmf,\n",
    "including `__init__`, `Values`, `Items` and `Render`. It also provides\n",
    "modifier methods `Set`, `Incr`, `Mult`, and `Remove`. These methods are\n",
    "all implemented with dictionary operations. For example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "672faf1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# class _DictWrapper\n",
    "\n",
    "def Incr(self, x, term=1):\n",
    "    self.d[x] = self.d.get(x, 0) + term\n",
    "\n",
    "def Mult(self, x, factor):\n",
    "    self.d[x] = self.d.get(x, 0) * factor\n",
    "\n",
    "def Remove(self, x):\n",
    "    del self.d[x]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "076b8ce6",
   "metadata": {},
   "source": [
    "Hist also provides `Freq`, which looks up the frequency of a given\n",
    "value.\n",
    "\n",
    "Because Hist operators and methods are based on dictionaries, these\n",
    "methods are constant time operations; that is, their run time does not\n",
    "increase as the Hist gets bigger."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b5fae95",
   "metadata": {},
   "source": [
    "## Pmf implementation\n",
    "\n",
    "Pmf and Hist are almost the same thing, except that a Pmf maps values to\n",
    "floating-point probabilities, rather than integer frequencies. If the\n",
    "sum of the probabilities is 1, the Pmf is normalized.\n",
    "\n",
    "Pmf provides `Normalize`, which computes the sum of the probabilities\n",
    "and divides through by a factor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "3881b291",
   "metadata": {},
   "outputs": [],
   "source": [
    "# class Pmf\n",
    "\n",
    "def Normalize(self, fraction=1.0):\n",
    "    total = self.Total()\n",
    "    if total == 0.0:\n",
    "        raise ValueError('Total probability is zero.')\n",
    "\n",
    "    factor = float(fraction) / total\n",
    "    for x in self.d:\n",
    "        self.d[x] *= factor\n",
    "\n",
    "    return total"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "470d1825",
   "metadata": {},
   "source": [
    "`fraction` determines the sum of the probabilities after normalizing;\n",
    "the default value is 1. If the total probability is 0, the Pmf cannot be\n",
    "normalized, so `Normalize` raises `ValueError`.\n",
    "\n",
    "Hist and Pmf have the same constructor. It can take as an argument a\n",
    "`dict`, Hist, Pmf or Cdf, a pandas Series, a list of (value, frequency)\n",
    "pairs, or a sequence of values.\n",
    "\n",
    "If you instantiate a Pmf, the result is normalized. If you instantiate a\n",
    "Hist, it is not. To construct an unnormalized Pmf, you can create an\n",
    "empty Pmf and modify it. The Pmf modifiers do not renormalize the Pmf."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ced7ce0c",
   "metadata": {},
   "source": [
    "## Cdf implementation\n",
    "\n",
    "A CDF maps from values to cumulative probabilities, so I could have\n",
    "implemented Cdf as a `_DictWrapper`. But the values in a CDF are ordered\n",
    "and the values in a `_DictWrapper` are not. Also, it is often useful to\n",
    "compute the inverse CDF; that is, the map from cumulative probability to\n",
    "value. So the implementaion I chose is two sorted lists. That way I can\n",
    "use binary search to do a forward or inverse lookup in logarithmic time.\n",
    "\n",
    "The Cdf constructor can take as a parameter a sequence of values or a\n",
    "pandas Series, a dictionary that maps from values to probabilities, a\n",
    "sequence of (value, probability) pairs, a Hist, Pmf, or Cdf. Or if it is\n",
    "given two parameters, it treats them as a sorted sequence of values and\n",
    "the sequence of corresponding cumulative probabilities.\n",
    "\n",
    "Given a sequence, pandas Series, or dictionary, the constructor makes a\n",
    "Hist. Then it uses the Hist to initialize the attributes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cc7eefdd",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5ddc3e1c",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'dw' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[24], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mxs, freqs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mzip\u001b[39m(\u001b[38;5;241m*\u001b[39m\u001b[38;5;28msorted\u001b[39m(\u001b[43mdw\u001b[49m\u001b[38;5;241m.\u001b[39mItems()))\n\u001b[1;32m      2\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mps \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mcumsum(freqs, dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mfloat)\n\u001b[1;32m      3\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mps \u001b[38;5;241m/\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mps[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n",
      "\u001b[0;31mNameError\u001b[0m: name 'dw' is not defined"
     ]
    }
   ],
   "source": [
    "self.xs, freqs = zip(*sorted(dw.Items()))\n",
    "self.ps = np.cumsum(freqs, dtype=np.float)\n",
    "self.ps /= self.ps[-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "59809f47",
   "metadata": {},
   "source": [
    "`xs` is the sorted list of values; `freqs` is the list of corresponding\n",
    "frequencies. `np.cumsum` computes the cumulative sum of the frequencies.\n",
    "Dividing through by the total frequency yields cumulative probabilities.\n",
    "For `n` values, the time to construct the Cdf is proportional to\n",
    "$n \\log n$.\n",
    "\n",
    "Here is the implementation of `Prob`, which takes a value and returns\n",
    "its cumulative probability:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "17bd7f22",
   "metadata": {},
   "outputs": [],
   "source": [
    "# class Cdf\n",
    "\n",
    "def Prob(self, x):\n",
    "    if x < self.xs[0]:\n",
    "        return 0.0\n",
    "    index = bisect.bisect(self.xs, x)\n",
    "    p = self.ps[index - 1]\n",
    "    return p"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "879a57d0",
   "metadata": {},
   "source": [
    "The `bisect` module provides an implementation of binary search. And\n",
    "here is the implementation of `Value`, which takes a cumulative\n",
    "probability and returns the corresponding value:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aad82744",
   "metadata": {},
   "outputs": [],
   "source": [
    "# class Cdf\n",
    "\n",
    "def Value(self, p):\n",
    "    if p < 0 or p > 1:\n",
    "        raise ValueError('p must be in range [0, 1]')\n",
    "\n",
    "    index = bisect.bisect_left(self.ps, p)\n",
    "    return self.xs[index]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b67ea490",
   "metadata": {},
   "source": [
    "Given a Cdf, we can compute the Pmf by computing differences between\n",
    "consecutive cumulative probabilities. If you call the Cdf constructor\n",
    "and pass a Pmf, it computes differences by calling `Cdf.Items`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8b5f6fa5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# class Cdf\n",
    "\n",
    "def Items(self):\n",
    "    a = self.ps\n",
    "    b = np.roll(a, 1)\n",
    "    b[0] = 0\n",
    "    return zip(self.xs, a-b)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8dcdda40",
   "metadata": {},
   "source": [
    "`np.roll` shifts the elements of `a` to the right, and \"rolls\" the last\n",
    "one back to the beginning. We replace the first element of `b` with 0\n",
    "and then compute the difference `a-b`. The result is a NumPy array of\n",
    "probabilities.\n",
    "\n",
    "Cdf provides `Shift` and `Scale`, which modify the values in the Cdf,\n",
    "but the probabilities should be treated as immutable."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37d8c58e",
   "metadata": {},
   "source": [
    "## Moments\n",
    "\n",
    "Any time you take a sample and reduce it to a single number, that number\n",
    "is a statistic. The statistics we have seen so far include mean,\n",
    "variance, median, and interquartile range.\n",
    "\n",
    "A **raw moment** is a kind of statistic. If you have a sample of values,\n",
    "$x_i$, the $k$th raw moment is: $$m'_k = \\frac{1}{n} \\sum_i x_i^k$$ Or\n",
    "if you prefer Python notation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "a4247231",
   "metadata": {},
   "outputs": [],
   "source": [
    "def RawMoment(xs, k):\n",
    "    return sum(x**k for x in xs) / len(xs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "340e35a0",
   "metadata": {},
   "outputs": [],
   "source": [
    "def Mean(xs):\n",
    "    return RawMoment(xs, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "cb23e825",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "163.22347500412215"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Mean(female_heights)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "23bd7d0b",
   "metadata": {},
   "source": [
    "When $k=1$ the result is the sample mean, $\\bar{x}$. The other raw moments\n",
    "don't mean much by themselves, but they are used in some computations.\n",
    "\n",
    "The **central moments** are more useful. The $k$th central moment is:\n",
    "$$m_k = \\frac{1}{n} \\sum_i (x_i - \\bar{x})^k$$ Or in Python:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "cfb7012a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def CentralMoment(xs, k):\n",
    "    mean = RawMoment(xs, 1)\n",
    "    return sum((x - mean)**k for x in xs) / len(xs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "61926432",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-9.903557940122168e-14"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "CentralMoment(female_heights, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "4510bad5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "52.84042567529328"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "CentralMoment(female_heights, 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "8fc44e67",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-46.88569506887073"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "CentralMoment(female_heights, 3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "095c40c1",
   "metadata": {},
   "source": [
    "When $k=2$ the result is the second central moment, which you might\n",
    "recognize as variance. The definition of variance gives a hint about why\n",
    "these statistics are called moments. If we attach a weight along a ruler\n",
    "at each location, $x_i$, and then spin the ruler around the mean, the\n",
    "moment of inertia of the spinning weights is the variance of the values.\n",
    "If you are not familiar with moment of inertia, see\n",
    "<http://en.wikipedia.org/wiki/Moment_of_inertia>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "12147739",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "52.84042567529328"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def Var(xs):\n",
    "    return CentralMoment(xs, 2)\n",
    "\n",
    "Var(female_heights)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0f97f91",
   "metadata": {},
   "source": [
    "When you report moment-based statistics, it is important to think about\n",
    "the units. For example, if the values $x_i$ are in cm, the first raw\n",
    "moment is also in cm. But the second moment is in cm$^2$, the third\n",
    "moment is in cm$^3$, and so on.\n",
    "\n",
    "Because of these units, moments are hard to interpret by themselves.\n",
    "That's why, for the second moment, it is common to report standard\n",
    "deviation, which is the square root of variance, so it is in the same\n",
    "units as $x_i$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3c926907",
   "metadata": {},
   "source": [
    "## Skewness\n",
    "\n",
    "**Skewness** is a property that describes the shape of a distribution.\n",
    "If the distribution is symmetric around its central tendency, it is\n",
    "unskewed. If the values extend farther to the right, it is \"right\n",
    "skewed\" and if the values extend left, it is \"left skewed.\"\n",
    "\n",
    "This use of \"skewed\" does not have the usual connotation of \"biased.\"\n",
    "Skewness only describes the shape of the distribution; it says nothing\n",
    "about whether the sampling process might have been biased.\n",
    "\n",
    "Several statistics are commonly used to quantify the skewness of a\n",
    "distribution. Given a sequence of values, $x_i$, the **sample\n",
    "skewness**, $g_1$, can be computed like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "2a1d93df",
   "metadata": {},
   "outputs": [],
   "source": [
    "def StandardizedMoment(xs, k):\n",
    "    var = CentralMoment(xs, 2)\n",
    "    std = np.sqrt(var)\n",
    "    return CentralMoment(xs, k) / std**k"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "6b8a6c3f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-1.3624108479155668e-14, 1.0, -0.1220649274510512)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "StandardizedMoment(female_heights, 1), StandardizedMoment(female_heights, 2), StandardizedMoment(female_heights, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "c0268216",
   "metadata": {},
   "outputs": [],
   "source": [
    "def Skewness(xs):\n",
    "    return StandardizedMoment(xs, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "4dfacd5c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.1220649274510512"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Skewness(female_heights)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c4592341",
   "metadata": {},
   "source": [
    "$g_1$ is the third **standardized moment**, which means that it has been\n",
    "normalized so it has no units.\n",
    "\n",
    "Negative skewness indicates that a distribution skews left; positive\n",
    "skewness indicates that a distribution skews right. The magnitude of\n",
    "$g_1$ indicates the strength of the skewness, but by itself it is not\n",
    "easy to interpret.\n",
    "\n",
    "In practice, computing sample skewness is usually not a good idea. If\n",
    "there are any outliers, they have a disproportionate effect on $g_1$.\n",
    "\n",
    "Another way to evaluate the asymmetry of a distribution is to look at\n",
    "the relationship between the mean and median. Extreme values have more\n",
    "effect on the mean than the median, so in a distribution that skews\n",
    "left, the mean is less than the median. In a distribution that skews\n",
    "right, the mean is greater.\n",
    "\n",
    "**Pearson's median skewness coefficient** is a measure of skewness based\n",
    "on the difference between the sample mean and median:\n",
    "$$g_p = 3 (\\bar{x} - m) / S$$ Where $\\bar{x}$ is the sample mean, $m$ is the\n",
    "median, and $S$ is the standard deviation. Or in Python:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "05b8b6af",
   "metadata": {},
   "outputs": [],
   "source": [
    "def Median(xs):\n",
    "    cdf = thinkstats2.Cdf(xs)\n",
    "    return cdf.Value(0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "fc62c23f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(163.22347500412215, 163.0)"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Mean(female_heights), Median(female_heights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "78c5f8d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "def PearsonMedianSkewness(xs):\n",
    "    median = Median(xs)\n",
    "    mean = RawMoment(xs, 1)\n",
    "    var = CentralMoment(xs, 2)\n",
    "    std = np.sqrt(var)\n",
    "    gp = 3 * (mean - median) / std\n",
    "    return gp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "ed0887cd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0922289055190516"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "PearsonMedianSkewness(female_heights)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9e3ca4ec",
   "metadata": {},
   "source": [
    "This statistic is **robust**, which means that it is less vulnerable to\n",
    "the effect of outliers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "af2e5656",
   "metadata": {},
   "outputs": [],
   "source": [
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/nsfg.py\")\n",
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/first.py\")\n",
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/2002FemPreg.dct\")\n",
    "download(\n",
    "    \"https://github.com/AllenDowney/ThinkStats2/raw/master/code/2002FemPreg.dat.gz\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aaed2aa7",
   "metadata": {},
   "source": [
    "As an example, let's look at the skewness of birth weights in the NSFG\n",
    "pregnancy data. Here's the code to estimate and plot the PDF:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "30b28e42",
   "metadata": {},
   "outputs": [],
   "source": [
    "import first\n",
    "\n",
    "live, firsts, others = first.MakeFrames()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "6e7cbbca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = live.totalwgt_lb.dropna()\n",
    "pdf = thinkstats2.EstimatedPdf(data)\n",
    "thinkplot.Pdf(pdf, label='birth weight')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8111241a",
   "metadata": {},
   "source": [
    "Figure [\\[density_totalwgt_kde\\]](#density_totalwgt_kde){reference-type=\"ref\"\n",
    "reference=\"density_totalwgt_kde\"} shows the result. The left tail\n",
    "appears longer than the right, so we suspect the distribution is skewed\n",
    "left. The mean, 7.27 lbs, is a bit less than the median, 7.38 lbs, so\n",
    "that is consistent with left skew. And both skewness coefficients are\n",
    "negative: sample skewness is -0.59; Pearson's median skewness is -0.23."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "925530bc",
   "metadata": {},
   "source": [
    "![Estimated PDF of adult weight data from the\n",
    "BRFSS.](figs/density_wtkg2_kde.pdf){height=\"2.2in\"}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a5c5621",
   "metadata": {},
   "source": [
    "Now let's compare this distribution to the distribution of adult weight\n",
    "in the BRFSS. Again, here's the code:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "c8e124a0",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/downey/ThinkStats/soln/brfss.py:44: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.age.replace([7, 9], float('NaN'), inplace=True)\n",
      "/home/downey/ThinkStats/soln/brfss.py:47: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.htm3.replace([999], float('NaN'), inplace=True)\n",
      "/home/downey/ThinkStats/soln/brfss.py:50: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.wtkg2.replace([99999], float('NaN'), inplace=True)\n",
      "/home/downey/ThinkStats/soln/brfss.py:54: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n",
      "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n",
      "\n",
      "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n",
      "\n",
      "\n",
      "  df.wtyrago.replace([7777, 9999], float('NaN'), inplace=True)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df = brfss.ReadBrfss(nrows=None)\n",
    "data = df.wtkg2.dropna()\n",
    "pdf = thinkstats2.EstimatedPdf(data)\n",
    "thinkplot.Pdf(pdf, label='adult weight')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a46267ba",
   "metadata": {},
   "source": [
    "Figure [\\[density_wtkg2_kde\\]](#density_wtkg2_kde){reference-type=\"ref\"\n",
    "reference=\"density_wtkg2_kde\"} shows the result. The distribution\n",
    "appears skewed to the right. Sure enough, the mean, 79.0, is bigger than\n",
    "the median, 77.3. The sample skewness is 1.1 and Pearson's median\n",
    "skewness is 0.26.\n",
    "\n",
    "The sign of the skewness coefficient indicates whether the distribution\n",
    "skews left or right, but other than that, they are hard to interpret.\n",
    "Sample skewness is less robust; that is, it is more susceptible to\n",
    "outliers. As a result it is less reliable when applied to skewed\n",
    "distributions, exactly when it would be most relevant.\n",
    "\n",
    "Pearson's median skewness is based on a computed mean and variance, so\n",
    "it is also susceptible to outliers, but since it does not depend on a\n",
    "third moment, it is somewhat more robust."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83d0b0db",
   "metadata": {},
   "source": [
    "## Glossary\n",
    "\n",
    "-   **Probability density function (PDF)**: The derivative of a\n",
    "    continuous CDF, a function that maps a value to its probability\n",
    "    density.\n",
    "\n",
    "-   **Probability density**: A quantity that can be integrated over a\n",
    "    range of values to yield a probability. If the values are in units\n",
    "    of cm, for example, probability density is in units of probability\n",
    "    per cm.\n",
    "\n",
    "-   **Kernel density estimation (KDE)**: An algorithm that estimates a\n",
    "    PDF based on a sample.\n",
    "\n",
    "-   **discretize**: To approximate a continuous function or distribution\n",
    "    with a discrete function. The opposite of smoothing.\n",
    "\n",
    "-   **raw moment**: A statistic based on the sum of data raised to a\n",
    "    power.\n",
    "\n",
    "-   **central moment**: A statistic based on deviation from the mean,\n",
    "    raised to a power.\n",
    "\n",
    "-   **standardized moment**: A ratio of moments that has no units.\n",
    "\n",
    "-   **skewness**: A measure of how asymmetric a distribution is.\n",
    "\n",
    "-   **sample skewness**: A moment-based statistic intended to quantify\n",
    "    the skewness of a distribution.\n",
    "\n",
    "-   **Pearson's median skewness coefficient**: A statistic intended to\n",
    "    quantify the skewness of a distribution based on the median, mean,\n",
    "    and standard deviation.\n",
    "\n",
    "-   **robust**: A statistic is robust if it is relatively immune to the\n",
    "    effect of outliers."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a21248f4",
   "metadata": {},
   "source": [
    "## Exercises"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2c5d940",
   "metadata": {},
   "source": [
    "The distribution of income is famously skewed to the right. In this exercise, we’ll measure how strong that skew is.\n",
    "The Current Population Survey (CPS) is a joint effort of the Bureau of Labor Statistics and the Census Bureau to study income and related variables. Data collected in 2013 is available from http://www.census.gov/hhes/www/cpstables/032013/hhinc/toc.htm. I downloaded `hinc06.xls`, which is an Excel spreadsheet with information about household income, and converted it to `hinc06.csv`, a CSV file you will find in the repository for this book. You will also find `hinc2.py`, which reads this file and transforms the data.\n",
    "\n",
    "The dataset is in the form of a series of income ranges and the number of respondents who fell in each range. The lowest range includes respondents who reported annual household income “Under \\$5000.” \n",
    "\n",
    "The highest range includes respondents who made “\\$250,000 or more.”\n",
    "\n",
    "To estimate mean and other statistics from these data, we have to make some assumptions about the lower and upper bounds, and how the values are distributed in each range. `hinc2.py` provides `InterpolateSample`, which shows one way to model this data. It takes a `DataFrame` with a column, `income`, that contains the upper bound of each range, and `freq`, which contains the number of respondents in each frame.\n",
    "\n",
    "It also takes `log_upper`, which is an assumed upper bound on the highest range, expressed in `log10` dollars. The default value, `log_upper=6.0` represents the assumption that the largest income among the respondents is $10^6$, or one million dollars.\n",
    "\n",
    "`InterpolateSample` generates a pseudo-sample; that is, a sample of household incomes that yields the same number of respondents in each range as the actual data. It assumes that incomes in each range are equally spaced on a `log10` scale."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "39fe25c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "def InterpolateSample(df, log_upper=6.0):\n",
    "    \"\"\"Makes a sample of log10 household income.\n",
    "\n",
    "    Assumes that log10 income is uniform in each range.\n",
    "\n",
    "    df: DataFrame with columns income and freq\n",
    "    log_upper: log10 of the assumed upper bound for the highest range\n",
    "\n",
    "    returns: NumPy array of log10 household income\n",
    "    \"\"\"\n",
    "    # compute the log10 of the upper bound for each range\n",
    "    df['log_upper'] = np.log10(df.income)\n",
    "\n",
    "    # get the lower bounds by shifting the upper bound and filling in\n",
    "    # the first element\n",
    "    df['log_lower'] = df.log_upper.shift(1)\n",
    "    df.loc[0, 'log_lower'] = 3.0\n",
    "\n",
    "    # plug in a value for the unknown upper bound of the highest range\n",
    "    df.loc[41, 'log_upper'] = log_upper\n",
    "    \n",
    "    # use the freq column to generate the right number of values in\n",
    "    # each range\n",
    "    arrays = []\n",
    "    for _, row in df.iterrows():\n",
    "        vals = np.linspace(row.log_lower, row.log_upper, int(row.freq))\n",
    "        arrays.append(vals)\n",
    "\n",
    "    # collect the arrays into a single sample\n",
    "    log_sample = np.concatenate(arrays)\n",
    "    return log_sample\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "762e66be",
   "metadata": {},
   "outputs": [],
   "source": [
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/hinc.py\")\n",
    "download(\"https://github.com/AllenDowney/ThinkStats2/raw/master/code/hinc06.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "9d738aa2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import hinc\n",
    "income_df = hinc.ReadData()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "004dd414",
   "metadata": {},
   "outputs": [],
   "source": [
    "log_sample = InterpolateSample(income_df, log_upper=6.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "8c0f5a43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "log_cdf = thinkstats2.Cdf(log_sample)\n",
    "thinkplot.Cdf(log_cdf)\n",
    "thinkplot.Config(xlabel='Household income (log $)',\n",
    "               ylabel='CDF')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "127d4383",
   "metadata": {},
   "outputs": [],
   "source": [
    "sample = np.power(10, log_sample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "f49ad492",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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HM9x3rRpk9577z1dddVVys/P14YNG/TLX/5SdXV1mjlzZijKbneO5zhfeeWVKi0t1ZlnniljjDwej2688Ub95je/CUXJHUZT58Ly8nIdPHhQnTp1Csrn0nODsPLQQw9p4cKFev311xUdHW13OWGjoqJCEyZM0Lx585ScnGx3OWHN5/MpNTVVTz75pIYPH67x48dr+vTpmjt3rt2lhZUlS5bowQcf1F/+8hetWLFCr732mhYtWqQHHnjA7tLQCui5aYbk5GS5XC4VFRVZ2ouKipSent7oPunp6S3aHvWO51gf9sgjj+ihhx7Sv//9bw0aNCiYZbZ7LT3OGzdu1JYtWzRu3Dh/m8/nkyRFRERo3bp16tOnT3CLboeO5+9zRkaGIiMj5XK5/G39+/dXYWGhamtrFRUVFdSa26PjOc733nuvJkyYoOuuu06SdNppp6myslK/+MUvNH36dDmd/O7fGpo6F8bFxQWt10ai56ZZoqKiNHz4cBUUFPjbfD6fCgoKlJub2+g+ubm5lu0l6d13321ye9Q7nmMtSQ8//LAeeOABLV68WCNGjAhFqe1aS4/zKaecoq+//lqrVq3yv37yk59ozJgxWrVqlbKyskJZfrtxPH+fR40apQ0bNvjDoyR99913ysjIINg04XiOc1VVVYMAczhQGqZcbDW2nQuDOlw5jCxcuNC43W4zf/58s3r1avOLX/zCJCQkmMLCQmOMMRMmTDBTp071b//xxx+biIgI88gjj5g1a9aYmTNncit4M7X0WD/00EMmKirKvPLKK2b37t3+V0VFhV1foV1o6XEOxN1SzdPS47xt2zYTGxtrbrnlFrNu3Trz1ltvmdTUVPO73/3Orq/QLrT0OM+cOdPExsaav//972bTpk3mnXfeMX369DGXXXaZXV+hXaioqDArV640K1euNJLMY489ZlauXGm2bt1qjDFm6tSpZsKECf7tD98K/utf/9qsWbPGzJkzh1vB25o///nPpkePHiYqKsqMHDnSfPrpp/51Z511lpk0aZJl+5deesn07dvXREVFmVNPPdUsWrQoxBW3Xy051j179jSSGrxmzpwZ+sLbmZb+nT4a4ab5WnqcP/nkE5OTk2Pcbrfp3bu3+f3vf288Hk+Iq25/WnKc6+rqzH333Wf69OljoqOjTVZWlvnlL39p9u3bF/rC25H333+/0X9vDx/bSZMmmbPOOqvBPkOGDDFRUVGmd+/e5tlnnw16nQ5j6H8DAADhgzE3AAAgrBBuAABAWCHcAACAsEK4AQAAYYVwAwAAwgrhBgAAhBXCDQAACCuEGwAA0Co++OADjRs3Tt26dZPD4dAbb7zR4vcwxuiRRx5R37595Xa7lZmZqd///vcteg/CDYBWdd9992nIkCEn9B5LliyRw+HQ/v37m9xm/vz5SkhIaHL9li1b5HA4tGrVqhOqpS0rKChQ//795fV6G6y7+uqrG91n6tSpuvXWW4NcGTqqyspKDR48WHPmzDnu97j99tv11FNP6ZFHHtHatWv15ptvauTIkS16D2YFB9qBq6++Wvv372/wW9CSJUs0ZswY7du375gn+o4oKytLu3fvVnJyst2lBM1dd92le+65xzKD+Pe588471bt3b91xxx3q3bt3EKtDR3TBBRfoggsuaHJ9TU2Npk+frr///e/av3+/Bg4cqD/84Q86++yzJUlr1qzRE088oW+++Ub9+vWTJPXq1avFddBzAyAsuVwupaenKyIiPH+H++ijj7Rx40b99Kc/9bcZY3Tfffepb9++euGFF5SVlaXzzz9f3377rX+b5ORkjR07Vk888YQdZaODu+WWW7R06VItXLhQX331lX7+85/rRz/6kdavXy9J+uc//6nevXvrrbfeUq9evZSdna3rrrtOe/fubdHnEG6AMPPqq6/q1FNPldvtVnZ2th599FHL+saugyckJGj+/PmSpNraWt1yyy3KyMhQdHS0evbsqVmzZvm33b9/v6677jqlpKQoLi5O55xzjr788ssGdfztb39Tdna24uPjdfnll6uiosK/rqamRrfddptSU1MVHR2tM888U59//vkxv9f8+fPVo0cPxcTE6NJLL9WePXuOuX3gZanDl7oKCgo0YsQIxcTE6IwzztC6dess+/3zn//U6aefrujoaCUnJ+vSSy/1r9u3b58mTpyoxMRExcTE6IILLvD/o3y4xoSEBL311lvq16+fYmJi9LOf/UxVVVV67rnnlJ2drcTERN12222WS0k1NTW68847lZmZqc6dOysnJ0dLliw55vdbuHChzjvvPEVHR/vbnnnmGT388MO6//77NW7cOL300ku64IILVF1dbdl33LhxWrhw4THfH2ht27Zt07PPPquXX35Zo0ePVp8+fXTnnXfqzDPP1LPPPitJ2rRpk7Zu3aqXX35Zzz//vObPn6/ly5frZz/7WYs+i3ADhJHly5frsssu0+WXX66vv/5a9913n+69915/cGmOP/3pT3rzzTf10ksvad26dVqwYIGys7P963/+85+ruLhY//rXv7R8+XINGzZM5557ruU3q40bN+qNN97QW2+9pbfeekv/+c9/9NBDD/nX33XXXXr11Vf13HPPacWKFTrppJM0duzYJn87++yzz3Tttdfqlltu0apVqzRmzBj97ne/a/HxkaTp06fr0Ucf1RdffKGIiAhdc801/nWLFi3SpZdeqgsvvFArV65UQUGB5Vr/1VdfrS+++EJvvvmmli5dKmOMLrzwQtXV1fm3qaqq0p/+9CctXLhQixcv1pIlS3TppZcqPz9f+fn5+tvf/qa//vWveuWVV/z7fN9vs4358MMPNWLECEvbypUrNWrUKF1xxRWKjY1Vbm6u7rjjDg0fPtyy3ciRI7Vjxw5t2bLluI4hcDy+/vpreb1e9e3bV126dPG//vOf/2jjxo2SJJ/Pp5qaGj3//PMaPXq0zj77bD399NN6//33G/wickxBn3ccwAmbNGmScblcpnPnzpZXdHS0kWT27dtnjDHmyiuvNOedd55l31//+tdmwIAB/mVJ5vXXX7dsEx8fb5599lljjDG33nqrOeecc4zP52tQx4cffmji4uJMdXW1pb1Pnz7mr3/9qzHGmJkzZ5qYmBhTXl5uqSEnJ8cYY8yBAwdMZGSkWbBggX99bW2t6datm3n44YeNMca8//77lu91xRVXmAsvvNDymePHjzfx8fFNHrPNmzcbSWblypWW9/z3v//t32bRokVGkjl48KAxxpjc3Fxz1VVXNfp+3333nZFkPv74Y39baWmp6dSpk3nppZeMMcY8++yzRpLZsGGDf5sbbrjBxMTEmIqKCn/b2LFjzQ033GCMMWbr1q3G5XKZnTt3Wj7v3HPPNdOmTWvy+8XHx5vnn3/e0vbCCy+Y6Oho8+STT5qf/vSnTe5bVlZmJJklS5Y0uQ1wogL/rVm4cKFxuVxm7dq1Zv369ZbX7t27jTHGzJgxw0RERFjep6qqykgy77zzTrM/m54boJ0YM2aMVq1aZXk99dRTlm3WrFmjUaNGWdpGjRql9evXN3pHTWOuvvpqrVq1Sv369dNtt92md955x7/uyy+/1IEDB9S1a1fLb16bN2/2/+YlSdnZ2YqNjfUvZ2RkqLi4WFJ9r05dXZ2lzsjISI0cOVJr1qxptKY1a9YoJyfH0pabm9us7xNo0KBBlrok+WtbtWqVzj333CZriIiIsNTRtWtX9evXz1J3TEyM+vTp419OS0tTdna2unTpYmk7/JnN+W22MQcPHrRckpKkK664Qo8//riefPJJvf7668rOztZdd91luSQoSZ06dZJU38sEhMrQoUPl9XpVXFysk046yfJKT0+XVP/vlcfjsfzd/+677yRJPXv2bPZnhedIOyAMde7cWSeddJKlbceOHS1+H4fDofpfqo44+rLKsGHDtHnzZv3rX//Sv//9b1122WXKy8vTK6+8ogMHDigjI6PR8SBH360VGRnZ4DN9Pl+Law2Go2tzOByS5K/t8Em/td7/8Gcc63gcOHBALpdLy5cvb3DX09GBKFBycrL27dvXoP3aa6/Vtddeq//+7//W+PHjNWXKFO3YsUMvvPCCf5vDl/9SUlJa9uWA73HgwAFt2LDBv7x582atWrVKSUlJ6tu3r6666ipNnDhRjz76qIYOHaqSkhIVFBRo0KBBuuiii5SXl6dhw4bpmmuu0ezZs+Xz+XTzzTfrvPPOU9++fZtdBz03QBjp37+/Pv74Y0vbxx9/rL59+/pPnCkpKdq9e7d//fr16xv8Bh8XF6fx48dr3rx5evHFF/Xqq69q7969GjZsmAoLCxUREdHgN6/m3nLdp08fRUVFWeqsq6vT559/rgEDBjT5vT777DNL26efftqsz2uJQYMGqaCgoMkaPB6PpY49e/Zo3bp1TdbdHM35bbap/VavXt3k+oiICI0bN0633XabPvzwQ8u6b775RpGRkTr11FOPu26gMV988YWGDh2qoUOHSpKmTJmioUOHasaMGZKkZ599VhMnTtSvfvUr9evXT5dccok+//xz9ejRQ5LkdDr1z3/+U8nJyfrhD3+oiy66SP3792/xAHh6boAw8qtf/Uqnn366HnjgAY0fP15Lly7V448/rr/85S/+bc455xw9/vjjys3Nldfr1d13323pWXjssceUkZGhoUOHyul06uWXX1Z6eroSEhKUl5en3NxcXXLJJXr44YfVt29f7dq1yz8QN3CAa2M6d+6sm266Sb/+9a+VlJSkHj166OGHH1ZVVZWuvfbaRve57bbbNGrUKD3yyCO6+OKL9fbbb2vx4sUnfsACzJw5U+eee6769Omjyy+/XB6PR/n5+br77rt18skn6+KLL9b111+vv/71r4qNjdXUqVOVmZmpiy+++Lg/szm/zTZm7Nixeu655yxts2fPVrdu3fTDH/5QkrR27VotWLCgwYDiDz/8UKNHj26VnirgaGeffXaDnuGjRUZG6v7779f999/f5DbdunXTq6++ekJ10HMDhJFhw4bppZde0sKFCzVw4EDNmDFDv/3tby1Pq3300UeVlZWl0aNH68orr9Sdd96pmJgY//rY2Fg9/PDDGjFihE4//XRt2bJF+fn5cjqdcjgcys/P1w9/+ENNnjxZffv21eWXX66tW7cqLS2t2XU+9NBD+ulPf6oJEyZo2LBh2rBhg95++20lJiY2uv0PfvADzZs3T3/84x81ePBgvfPOO7rnnnuO+zg15eyzz9bLL7+sN998U0OGDNE555yjZcuW+dc/++yzGj58uH784x8rNzdXxhjl5+c3uOzUUt/322xjrrrqKn377beWO0j69u2rJ598UgMHDtTzzz+vM888Uz169GjwTJuFCxfq+uuvP6GagbbMYY4VsQAAbdavf/1rlZeX669//WuDdVdffXWjjwD417/+pV/96lf66quvwvYBhwA9NwDQTk2fPl09e/Zs0WDtyspKPfvsswQbhDV6bgAAQFih5wYAAIQVwg0AAAgrhBsAABBWCDcAACCsEG4AAEBYIdwAAICwQrgBAABhhXADAADCCuEGAACElf8PNmpyeQklICgAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cdf = thinkstats2.Cdf(sample)\n",
    "thinkplot.Cdf(cdf)\n",
    "thinkplot.Config(xlabel='Household income ($)',\n",
    "               ylabel='CDF')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f25f96e4",
   "metadata": {},
   "source": [
    "Compute the median, mean, skewness and Pearson’s skewness of the resulting sample. What fraction of households report a taxable income below the mean? How do the results depend on the assumed upper bound?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "7f2b2719",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(74278.70753118739, 51226.45447894046)"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "Mean(sample), Median(sample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "b771f4d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4.949920244429579, 0.7361258019141795)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "Skewness(sample), PearsonMedianSkewness(sample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "e849e80c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.660005879566872"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# About 66% of the population makes less than the mean\n",
    "\n",
    "cdf.Prob(Mean(sample))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48e5bd15",
   "metadata": {},
   "source": [
    "All of this is based on an assumption that the highest income is one million dollars, but that's certainly not correct.  What happens to the skew if the upper bound is 10 million?\n",
    "\n",
    "Without better information about the top of this distribution, we can't say much about the skewness of the distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c726d530",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
